FWFWebViewFactory
FWFWebViewFactory
类是一个用于创建和管理 FWFWebView
实例的工厂类。它实现了 FlutterPlatformViewFactory
协议,这使得它能够在 Flutter 中创建平台视图。
类声明
@interface FWFWebViewFactory : NSObject <FlutterPlatformViewFactory>
@property(nonatomic, weak) FWFInstanceManager *instanceManager;
- (instancetype)initWithManager:(FWFInstanceManager *)manager;
@end
FWFWebViewFactory
继承自NSObject
并实现了FlutterPlatformViewFactory
协议。- 它有一个属性
instanceManager
,用于管理FWFWebView
实例。
初始化方法
@implementation FWFWebViewFactory
- (instancetype)initWithManager:(FWFInstanceManager *)manager {
self = [self init];
if (self) {
_instanceManager = manager;
}
return self;
}
initWithManager:
方法是该类的初始化方法,接受一个FWFInstanceManager
实例作为参数。- 初始化时,将传入的
manager
赋值给instanceManager
属性。
FlutterPlatformViewFactory 协议方法
createArgsCodec
- (NSObject<FlutterMessageCodec> *)createArgsCodec {
return [FlutterStandardMessageCodec sharedInstance];
}
- 该方法返回一个
FlutterStandardMessageCodec
实例,用于编码和解码消息。
createWithFrame:viewIdentifier:arguments:
(iOS)
#if TARGET_OS_IOS
- (NSObject<FlutterPlatformView> *)createWithFrame:(CGRect)frame
viewIdentifier:(int64_t)viewId
arguments:(id _Nullable)args {
NSNumber *identifier = (NSNumber *)args;
FWFWebView *webView =
(FWFWebView *)[self.instanceManager instanceForIdentifier:identifier.longValue];
webView.frame = frame;
return webView;
}
- 该方法在 iOS 平台上实现,用于创建一个
FWFWebView
实例。 - 它接受一个
CGRect
类型的frame
,一个int64_t
类型的viewId
,以及一个可选的args
参数。 args
参数被转换为NSNumber
类型,并用于从instanceManager
中获取对应的FWFWebView
实例。- 设置
webView
的frame
属性并返回该实例。
createWithViewIdentifier:arguments:
(macOS)
#else
- (nonnull NSView *)createWithViewIdentifier:(int64_t)viewId arguments:(nullable id)args {
NSNumber *identifier = (NSNumber *)args;
FWFWebView *webView =
(FWFWebView *)[self.instanceManager instanceForIdentifier:identifier.longValue];
return webView;
}
#endif
- 该方法在 macOS 平台上实现,用于创建一个
FWFWebView
实例。 - 它接受一个
int64_t
类型的viewId
和一个可选的args
参数。 args
参数被转换为NSNumber
类型,并用于从instanceManager
中获取对应的FWFWebView
实例。- 返回该
webView
实例。
本文作者:Maeiee
本文链接:FWFWebViewFactory
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!